package fr.afcepf.ai89.lagrandebouffe.data;


import java.util.List;

import fr.afcepf.ai89.lagrandebouffe.entity.Plat;

/**
 * Méthodes utilisées par l'application pour l'accès aux données manipulant le {@link Plat}.
 * Définit les traitement d'ajout, de recherche et de suppression d'un {@link Plat}.
 * @author stagiaire
 *
 */
public interface IDataPlat {

    /**
     * Méthode permettant l'ajout d'un {@link Plat} dans la BDD.
     * @param lePlat - le {@link Plat} à ajouter
     * <code>
     * <ul>
     * @return
     * <li><strong> la clé primaire</strong><br/>
     * si le {@link Plat} est bien ajouté.</li>
     * <li>
     * <strong>null</strong><br/>
     * dans le cas ou l'ajout ne marche pas
     * </li></ul>
     * </code>
     */
    Integer ajouter(Plat lePlat);
    /**
     * @param lePlat - le {@link Plat} à manger.
     * @return
     * <code>
     * <ul>
     * <li><strong> true</strong><br/>
     * si le {@link Plat} est bien mangé.</li>
     * <li>
     * <strong>false</strong><br/>
     * si on a encore faim
     * </li></ul>
     * </code>
     */
    boolean manger(Plat lePlat);

    /**
     * Méthode permettant de rechercher des {@link Plat} par libelle.
     * @param libelle - le libelle recherché dans le {@link Plat }
     * @return une liste de {@link Plat}
     * <code>
     * <ul>
     * <li>une liste vide si aucun {@link Plat} be correspond au libellé demandé.</li>
     * <li>une liste contenant tous les {@link Plat} dont le libellé contient le paramètres libellé du plat recherché
     * </li>
     * </ul>
     * </code>
     */
    List<Plat> rechercher(String libelle);


}
